/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package beans;

/**
 *
 * @author Tavo
 */
import paquetePrueba.*;
import java.util.*;
import javax.faces.model.SelectItem;
public class Pregunta
{

    private String idPregunta;
    private String pregunta;
    private List respuestas;
    private List<SelectItem> opcionesRespuestas;
    private String tipoPregunta;
    private List<String> listaItemsSeleccionados;
    private boolean acierto;

    private List<Integer> preguntasHechas;

    
    List<ControlPreguntas> ListaCuestiones;

    private TreeSet<Integer> respuestasPregutaOrdenados;
    private TreeSet<Integer> miRespuestasPregutaOrdenados;

    public Pregunta()
    {
     //inicializar lista de respuestas, respuestas opcionales y lista de mis respuestas
     respuestas =new ArrayList();
     opcionesRespuestas = new ArrayList<SelectItem>();
     listaItemsSeleccionados=new ArrayList<String>();

     preguntasHechas=new ArrayList<Integer>();

     ListaCuestiones=new ArrayList<ControlPreguntas>();

     respuestasPregutaOrdenados=new TreeSet<Integer>();
     miRespuestasPregutaOrdenados=new TreeSet<Integer>();


     llenar();

     siguientePregunta();
   }

    public void llenar()
    {
        ControlPreguntas obj=new ControlPreguntas();
        obj.setPreguntasHechas(preguntasHechas);
        obj.nuevaPregunta();
        this.preguntasHechas=obj.getPreguntasHechas();
        
        if(obj.isHayMasPreguntas()==true)
        {
            ListaCuestiones.add(obj);
            llenar();
        }
    }

    int index=0;
    boolean t=false;
    public void siguientePregunta()
    {
        if(index<ListaCuestiones.size())
        {

            if(t==false)
        {
        Datos(ListaCuestiones.get(index));
        t=true;
        }
        else
        {
            actualizar(ListaCuestiones.get(index));
            t=false;
            index++;
            // System.out.println("-----------------------\nidPregunta = "+idPregunta+"\n Pregunta = "+pregunta+"\nRespuestas = "+respuestas+"\nOp Res = "+opcionesRespuestas+"\n Tipo = "+tipoPregunta+"\n Acierto = "+acierto+"\nItems = "+listaItemsSeleccionados);
            siguientePregunta();
        }
        
        }
        else
        {
            index=ListaCuestiones.size()-1;
        }
    }

    public void previaPregunta()
    {
        --index;
        if(index<0){index=0;}
        if(index>-1)
        {
        Datos(ListaCuestiones.get(index));
        }
    }


    public void evaluaraPregunta()
    {
        Iterator in=respuestas.iterator();
        while(in.hasNext())
        {
            String id=in.next().toString();
            respuestasPregutaOrdenados.add(Integer.parseInt(id));
        }

        Iterator in2=listaItemsSeleccionados.iterator();
        while(in2.hasNext())
        {
            String id=in2.next().toString();
            miRespuestasPregutaOrdenados.add(Integer.parseInt(id));
        }
        if(respuestasPregutaOrdenados.equals(miRespuestasPregutaOrdenados))
        {
            this.acierto=true;
        }
        else
        {
            this.acierto=false;
        }
        respuestasPregutaOrdenados.clear();
        miRespuestasPregutaOrdenados.clear();

    }

    public void actualizar(ControlPreguntas obj)
    {
        obj.setListaItemsSeleccionados(listaItemsSeleccionados);
        evaluaraPregunta();
        obj.setAcierto(acierto);


    }

    public void Datos(ControlPreguntas obj)
    {
        this.idPregunta=obj.getIdPregunta();
        this.pregunta=obj.getPregunta();
        this.respuestas=obj.getRespuestas();
        this.opcionesRespuestas=obj.getOpcionesRespuestas();
        this.tipoPregunta=obj.getTipoPregunta();
        this.acierto=obj.isAcierto();
        this.listaItemsSeleccionados=obj.getListaItemsSeleccionados();
        
    }

    public void calificacion()
    {
        int correctas=0;
        int incorrectas=0;
        Iterator itera=ListaCuestiones.iterator();

        while(itera.hasNext())
        {
            ControlPreguntas pregunta=(ControlPreguntas)itera.next();

            if(pregunta.isAcierto()==true)
            {
                correctas++;
            }
            else
            {
                incorrectas++;
            }

          /* System.out.println("Tus resultados son:");
           System.out.println("id Pregunta= "+pregunta.getIdPregunta());
           System.out.println("Pregunta= "+pregunta.getPregunta());
           System.out.println("Respuestas= "+pregunta.getRespuestas());
           System.out.println("Respuestas Opcionales= "+pregunta.getOpcionesRespuestas().toString());
           System.out.println("Tipo de Pregnta= "+pregunta.getTipoPregunta());
           System.out.println("Tus Respuestas= "+pregunta.getListaItemsSeleccionados());
           System.out.println("Acierto= "+pregunta.isAcierto());*/
        }
        System.out.println("Correctas = "+correctas+"\nIncorrectas = "+incorrectas);
    }

  



    

    public boolean isAcierto() {
        return acierto;
    }

    public void setAcierto(boolean acierto) {
        this.acierto = acierto;
    }

    public String getIdPregunta() {
        return idPregunta;
    }

    public void setIdPregunta(String idPregunta) {
        this.idPregunta = idPregunta;
    }

    public List<String> getListaItemsSeleccionados() {
        return listaItemsSeleccionados;
    }

    public void setListaItemsSeleccionados(List<String> listaItemsSeleccionados) {
        this.listaItemsSeleccionados = listaItemsSeleccionados;
    }

    public List<SelectItem> getOpcionesRespuestas() {
        return opcionesRespuestas;
    }

    public void setOpcionesRespuestas(List<SelectItem> opcionesRespuestas) {
        this.opcionesRespuestas = opcionesRespuestas;
    }

    public String getPregunta() {
        return pregunta;
    }

    public void setPregunta(String pregunta) {
        this.pregunta = pregunta;
    }

    public List<Integer> getPreguntasHechas() {
        return preguntasHechas;
    }

    public void setPreguntasHechas(List<Integer> preguntasHechas) {
        this.preguntasHechas = preguntasHechas;
    }

    public List getRespuestas() {
        return respuestas;
    }

    public void setRespuestas(List respuestas) {
        this.respuestas = respuestas;
    }

    public String getTipoPregunta() {
        return tipoPregunta;
    }

    public void setTipoPregunta(String tipoPregunta) {
        this.tipoPregunta = tipoPregunta;
    }
 

   /* public static void main(String args[])
    {
        Pregunta o=new Pregunta();
        Iterator a=o.ListaCuestiones.iterator();

        while(a.hasNext())
        {
            System.out.println(((ControlPreguntas)a.next()).getPregunta()+o.ListaCuestiones.size());
        }
        

    }*/
}
